package com.biconn.bigdata.es.repository;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;

/**
 * Created by Administrator on 2018/8/4.
 */

/**
 * es操作基类
 * botu
 * com.bicon.botu.es
 *
 * @author 123774135@qq.com
 * @create 2018-08-04 18:29
 **/
public interface BaseElasticsearchRepository<T> {

    public int save(T t);

    public boolean delet(String indexName);

    public int saveIndex(T t);
    
    public int deleteIndex(T t);
    
    public int updateIndex(T t);
    
    public int batchCreate(List<Map<String,Object>> list,String indexname,String typename);
    
    public <T>int batch(List<T> list,String indexname,String typename);
    
    public int batchAddField(String indexname,String typename, List<Map<String,String>> list);
    
    public void findIndex(String indexname);

    /**
     * 
     * @Title: queryOfMatch   
     * @Description: matchPhraseQuery和matchQuery等的区别，在使用matchQuery等时，即使你传入的是“小别克老”，在执行查询时，
     * “小别克老”会被分词器分词，例如paoding解析成“小别/别克/老”，而使用matchPhraseQuery时，“小别克老”并不会被分词器分词，
     * 而是直接以一个短语的形式查询，而如果你在创建索引所使用的field的value中没有这么一个短语（顺序无差，且连接在一起），那么将查询不出任何结果。
     * 而这个方法会被进行分词后进行匹配 
     * @param indexname
     * @param typename
     * @param prarms
     * @param page
     * @param size
     * @return      
     * List<Map<String,Object>>      
     * @throws
     */
    public List<JSONObject> queryOfMatch(String indexname, String typename, Map<String, String> prarms, int page,
			int size);
    /**
     * 
     * @Title: queryOfmatchPhrase   
     * @Description: 短语匹配，要查询的短语不会被进行分词   
     * @param indexname
     * @param typename
     * @param prarms
     * @param page
     * @param size
     * @return      
     * List<Map<String,Object>>      
     * @throws
     */

    public List<Map<String,Object>> queryOfmatchPhrase(String indexname, String typename, Map<String, String> prarms,
			int page, int size);

	
    
    
}
